<?php

    /**
     * @package      Modules
     * @subpackage   Widgets_Classes
     *
     * @license      GNU Lesser General Public Licence see LICENCE-LGPL file or http://www.gnu.org/licenses/lgpl.html
     */
    abstract class Widgets_Classes_Widget
    {

    ////////////////////////////////////////////////////////////////////////////
    //                               Attributes                               //
    ////////////////////////////////////////////////////////////////////////////

        /**
         * Widget name
         *
         * @var     string
         */
        protected $_name = null;

        /**
         * Widget parameters
         *
         * Format :
         *  key
         *  type (string, number, boolean)
         *  name
         *  default
         *
         * @var     array
         */
        protected $_params = array();

        const TYPE_STRING   = 'string';
        const TYPE_NUMBER   = 'number';
        const TYPE_BOOLEAN  = 'boolean';

    ////////////////////////////////////////////////////////////////////////////
    //                           Getters / Setters                            //
    ////////////////////////////////////////////////////////////////////////////

        /**
         * Retrieves widget params
         *
         * @return      array
         */
        public function getParams()
        {
            return $this->_params;
        }

        /**
         * Retrieves widget name
         *
         * @return      string
         */
        public function getName()
        {
            return $this->_name;
        }

    ////////////////////////////////////////////////////////////////////////////
    //                                Methods                                 //
    ////////////////////////////////////////////////////////////////////////////

        /**
         * Returns asked info
         *
         * @param       array       $params
         */
        public abstract function process(array $params = array());
    }